package com.bicon.botu.mall.coupon.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.bicon.botu.core.base.repository.mybatis.UuidBaseEntity;
import com.bicon.botu.mall.coupon.common.CouponStatus;
import com.google.common.base.Objects;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 优惠券实体类
 * </p>
 *
 * @author 吕祥
 * @since 2017-07-19
 */
@Data
@TableName("coupons")
public class Coupons extends UuidBaseEntity<Coupons> {

    /**
     * 活动名称
     */
    @TableField("name")
    private String name;
    /**
     * 优惠金额
     */
    @TableField("discount_amount")
    private BigDecimal discountAmount;
    /**
     * 订单最小金额
     */
    @TableField("order_amount")
    private BigDecimal orderAmount;
    /**
     * 优惠券数量
     */
    @TableField("number")
    private Integer number;
    /**
     * 开始使用日期
     */
    @TableField("firs_date")
    private Date firsDate;
    /**
     * 最后使用日期
     */
    @TableField("last_date")
    private Date lastDate;
    /**
     * 优惠卷发行日期
     */
    @TableField("issue_date")
    private Date issueDate;
    /**
     * 优惠券发行结束日期
     */
    @TableField("ending_date")
    private Date endingDate;
    /**
     * 优惠券使用范围
     */
    @TableField("path")
    private String path;
    /**
     * 备注
     */
    @TableField("remarks")
    private String remarks;
    /**
     * 获取数量
     */
    @TableField("get_number")
    private int getNumber;
    /**
     * 使用数量
     */
    @TableField("use_number")
    private int useNumber;
    /**
     * 商家名称
     */
    @TableField("shop_name")
    private String shopName;
    /**
     * 优惠券类型： 0 = 全场， 1 = 品牌， 2 = 商品， 3 = 分类
     */
    private int type;
    /**
     * 发行状态： 0 = 发行， 1 = 停止发行
     */
    @TableField("issue_state")
    private int issueState;

    /**
     * 商铺id,目前自营默认为id为0
     */
    @TableField("store_id")
    private String storeId;



    @Override
    public boolean equals(Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof Coupons)) {
            return false;
        }
        Coupons coupons = (Coupons) o;
        return coupons.getId().equals(getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(super.hashCode(), name, discountAmount, orderAmount, number, firsDate, lastDate, issueDate, endingDate, path, remarks, getNumber, useNumber, shopName, type, issueState);
    }

}
